Worldwide

Row

Countries

146

Confirmed

167449

Active Cases

84975 (50.7%)

Recovered

76034 (45.4%)

Deaths

6440 (3.8%)

Row

Active Cases - Worldwide

USA

Row

States

54

Confirmed

3499

Active

3424 (97.9%)

Recovered

12 (0.3%)

Deaths

63 (1.8%)

Row

Active Cases - USA

About

---
title: "COVID-19"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    vertical_layout: fill
    source_code: embed
---

```{r setup, include=FALSE}
# Load libraries
library(flexdashboard)
library(covidvirus)
library(tidyverse)
library(plotly)
library(DT)

# Acquire Data
virus <- covidvirus::get_cases(wide=T)

# define colors
clr_active = 'orange'
clr_confirmed = 'blue'
clr_dead = 'darkred'
clr_recovered = 'forestgreen'
clr_total = 'blue'
clr_overall = 'purple'

# replace NAs with zeros
virus <- virus %>%
  mutate(
    confirmed = ifelse(is.na(confirmed), 0, confirmed),
    death = ifelse(is.na(death), 0, death),
    recovered = ifelse(is.na(recovered), 0, recovered),
    active = confirmed - death - recovered,
    country= case_when(
      country_region == 'United Arab Emirates' ~ 'UAE',
      country_region == 'United States' ~ 'USA',
      country_region == 'North Macedonia' ~ 'N. Macedonia',
      TRUE ~ country_region
    )
  )

# data summaries - country

country_totals <- virus %>%
  group_by(country) %>%
  summarize(
    confirmed = sum(confirmed),
    death = sum(death),
    recovered = sum(recovered),
    active = sum(active)
  ) %>%
  ungroup %>%
  arrange(desc(confirmed)) %>%
  mutate(country = factor(country, levels = country))

daily_totals <- virus %>%
  pivot_longer(
    cols = confirmed:active,
    names_to = 'type',
    values_to = 'cases'
  ) %>%
  group_by(date, type) %>%
  summarize(
    cases = sum(cases)
  ) %>%
  ungroup()


# data summaries - US

usdf <- virus %>%
  filter(country == 'USA') %>%
  select(-province_state, -city_county, -continent, -lat, -long, -country) %>%
  filter(!state %in% c('Diamond Princess', 'Grand Princess'))


us_totals <- usdf %>%
  group_by(state, state_name) %>%
  summarize(
    confirmed = sum(confirmed),
    death = sum(death),
    recovered = sum(recovered),
    active = sum(active)
  ) %>%
  ungroup %>%
  arrange(desc(confirmed)) %>%
  mutate(state = factor(state, levels = state))

us_daily <- usdf %>%
  pivot_longer(
    cols = confirmed:active,
    names_to = 'type',
    values_to = 'cases'
  ) %>%
  group_by(date, type) %>%
  summarize(
    cases = sum(cases)
  ) %>%
  ungroup()

```

Worldwide
==============

Row
-----------------------
### Countries

```{r}
count_affected_countries <- country_totals %>%
  filter(confirmed > 0) %>%
  select(country, confirmed) %>%
  distinct() %>%
  count() %>%
  pull(n)

valueBox(count_affected_countries, color = clr_overall)
  
```

### Confirmed

```{r}
total_confirmed = sum(country_totals$confirmed)
valueBox(total_confirmed, icon = 'fa-user-md', color = clr_total)
```



### Active Cases
```{r}
active_cases = sum(country_totals$active)
pct_active = round((active_cases / total_confirmed) * 100,1)
valueBox(paste0(active_cases," (",pct_active,"%)"), icon = 'fa-hospital', color = clr_active)
```

### Recovered
```{r}
total_recovered = sum(country_totals$recovered)
pct_recovered = round((total_recovered / total_confirmed) * 100,1)
valueBox(paste0(total_recovered," (",pct_recovered,"%)"), icon = 'fa-walking', color = clr_recovered)
```

### Deaths
```{r}
total_deaths = sum(country_totals$death)
pct_dead = round((total_deaths / total_confirmed) * 100, 1)
valueBox(paste0(total_deaths," (", pct_dead, "%)"), icon = 'fa-dizzy', color = clr_dead)
```

Row
-----------------------------------------------------------------------

### Active Cases - Worldwide

```{r map_world_chloropleth, echo = FALSE}
# specify map projection/options
 g <- list(
   showframe = FALSE,
   showcoastlines = TRUE,
   projection = list(type = 'Robinson')
 )

country_totals2 <- country_totals %>%
  mutate(
    hover = paste0(country, '
', 'Confirmed cases: ', confirmed, '
', 'Deaths: ', death, '
', 'Recovered: ', recovered) ) plot_geo(country_totals2) %>% add_trace( z = ~active, locations = ~country, text = ~hover, locationmode = 'country names', color = ~active, colors = 'Oranges' ) %>% colorbar(title = 'Active Cases', limits = c(0, max(country_totals$active)), len = 1) %>% layout( #title = 'Active Covid-19 Virus Cases Worldwide
(Hover for breakdown)', geo = g, autosize = T ) ``` USA ================================= Row -------------- ### States ```{r} state_count = usdf %>% filter(confirmed > 0 & !state %in% c('Diamond Princess','Grand Princess')) %>% select(state) %>% distinct() %>% count() valueBox(value = state_count, color = clr_overall) ``` ### Confirmed ```{r} us_confirmed = sum(usdf$confirmed) valueBox(us_confirmed, icon = 'fa-user-md', color = clr_total) ``` ### Active ```{r} us_active_cases = sum(usdf$active) us_pct_active = round((us_active_cases / us_confirmed) * 100,1) valueBox(paste0(us_active_cases," (",us_pct_active,"%)"), icon = 'fa-hospital', color = clr_active) ``` ### Recovered ```{r} us_recovered = sum(usdf$recovered) us_pct_recovered = round((us_recovered / us_confirmed) * 100,1) valueBox(paste0(us_recovered," (",us_pct_recovered,"%)"), icon = 'fa-walking', color = clr_recovered) ``` ### Deaths ```{r} us_deaths = sum(usdf$death) us_pct_dead = round((us_deaths / us_confirmed) * 100, 1) valueBox(paste0(us_deaths," (", us_pct_dead, "%)"), icon = 'fa-dizzy', color = clr_dead) ``` Row ---------------------- ### Active Cases - USA ```{r} ``` Trends =============================== Row ---------------------- ### Daily Cumulative Cases by Type - Worldwide ```{r} dailies <- daily_totals %>% pivot_wider( names_from = type, values_from = cases, values_fill = list(cases = 0) ) %>% arrange(date) %>% mutate( total_active = cumsum(active), total_confirmed = cumsum(confirmed), total_dead = cumsum(death), total_recovered = cumsum(recovered) ) %>% select(-active, -confirmed, -death, -recovered) plot_ly(data = dailies, x = ~date, y = ~total_active, name='Active', type = 'scatter', mode = 'lines+markers', line = list(color = clr_active), marker = list(color = clr_active)) %>% add_trace(y = ~total_dead, name = 'Dead', type = 'scatter', mode = 'lines+markers', line = list(color = clr_dead), marker = list(color = clr_dead)) %>% add_trace(y = ~total_recovered, name = 'Recovered', type = 'scatter', mode = 'lines+markers', line = list(color= clr_recovered), marker = list(color=clr_recovered)) %>% layout(yaxis = list(title = 'Cumulative Total Cases (log scale)', type = 'log'), xaxis = list(title = 'Date')) ``` ### Daily Cumulative Cases by Type - USA ```{r} us_dailies <- us_daily %>% pivot_wider( names_from = type, values_from = cases, values_fill = list(cases = 0) ) %>% arrange(date) %>% mutate( total_active = cumsum(active), total_confirmed = cumsum(confirmed), total_dead = cumsum(death), total_recovered = cumsum(recovered) ) %>% select(-active, -confirmed, -death, -recovered) plot_ly(data = us_dailies, x = ~date, y = ~total_active, name='Active', type = 'scatter', mode = 'lines+markers', line = list(color = clr_active), marker = list(color = clr_active)) %>% add_trace(y = ~total_dead, name = 'Dead', type = 'scatter', mode = 'lines+markers', line = list(color = clr_dead), marker = list(color = clr_dead)) %>% add_trace(y = ~total_recovered, name = 'Recovered', type = 'scatter', mode = 'lines+markers', line = list(color= clr_recovered), marker = list(color=clr_recovered)) %>% layout(yaxis = list(title = 'Cumulative Total Cases (log scale)', type = 'log')) ``` Row ----------- ### Active, Recovery, & Death Rates by Country (minimum 50 confirmed cases) ```{r} country_rates <- country_totals %>% mutate( active_pct = round((active / confirmed)*100,1), dead_pct = round((death / confirmed) * 100, 1), recover_pct = round((recovered / confirmed) * 100, 1) ) %>% arrange(desc(confirmed)) %>% select(country = country, confirmed, active_pct, dead_pct, recover_pct) %>% filter(confirmed >= 50) datatable(country_rates, rownames = F, colnames = c("Country", "Confirmed", "Active Rate", "Death Rate", "Recovery Rate"), options = list(dom = 'tip') ) ``` ### Active, Recovery, & Death Rates by State ```{r} state_rates <- us_totals %>% mutate( active_pct = round((active / confirmed)*100,1), dead_pct = round((death / confirmed) * 100, 1), recover_pct = round((recovered / confirmed) * 100, 1) ) %>% arrange(desc(confirmed)) %>% select(state, confirmed, active_pct, dead_pct, recover_pct) %>% filter(confirmed > 0) datatable(state_rates, rownames = F, colnames = c("State", "Confirmed", "Active Rate", "Death Rate", "Recovery Rate"), options = list(dom = 'tip') ) ``` About =============